$(document).ready(function(){
	chat_js.init();
	$("#page_title").html("咨询聊天室");
});
var chat_js = {};
chat_js.bind = function(){
	$("#chat_frame_content").scroll(function(){
		//记录滚动次数
		vm.$count_scroll++;
	});	
	$("#show_pic_modal_img").get(0).onload = function() {
		vm.pic_modal_img_is_load = true;
	}	
}
//获取今日的日期，时间格式yyyy-MM-dd
chat_js.get_today = function(){
	var today = new Date();
	var year = today.getFullYear();
	//这里少一的
	var month = today.getMonth()+1;
	var date = today.getDate();
	var hh = today.getHours();
	var mm = today.getMinutes();
	var ss = today.getSeconds();
	//下面就将每个数字都限制好位数
	return year+"-"+chat_js.str(month)+"-"+chat_js.str(date)+" "+chat_js.str(hh)+":"+chat_js.str(mm)+":"+chat_js.str(ss);
}
chat_js.str = function(str){
	var s = str+"";
	var length = s.length;
	if(length!=2){
		return "0"+s;
	}
	return str;
}
chat_js.init = function(){
	vm.cal_position();
	vm.load(function(){
		//启动时间任务
		vm.timer();
	});
	chat_js.bind();
//	$("#issue_title_p").html(common.decodeURIChina(common.getUrlParam('nickname'))+"&nbsp;&nbsp;&nbsp;"+common.getUrlParam('age')+"岁");
	vm.cal_pic_modal_height();
}
var vm = avalon.define({
//---------微信上传---------
	weixin_images: {
		//这个就是图片的地址
		localIds: [],
		//上传用的media_id
		serverIds: []
	},
	//这个$index用来记录当前起点
	$weixin_upload_index: 0,
	//这个单纯是用来执行递归
	$index:0,
	//直接上传图片
	weixin_upload: function() {
		
		//选择图片
		wx.chooseImage({
			success: function(res) {
				if(res.localIds.length<=0){
					return ;
				}
				//res.localIds是一个数组
				vm.weixin_images.localIds.pushArray(res.localIds);
				//选择完之后直接上传到微信
				vm.$index = vm.$weixin_upload_index;
				//递归上传
				vm.weixin_upload_item(function(){
					vm.$weixin_upload_index = vm.$index;
				});
			}
		});
	},
	/**
	 * 直接执行上传
	 * @param {Object} callback 回调函数
	 */
	weixin_upload_item: function(callback) {
		var length = vm.weixin_images.localIds.size();
		wx.uploadImage({
			localId: vm.weixin_images.localIds[vm.$index],
			success: function(res) {
				vm.weixin_images.serverIds.push(res.serverId);
				vm.$content = vm.weixin_images.localIds[vm.$index];
				vm.send_message_image();
				vm.$index++;
				if (vm.$index < length) {
					vm.weixin_upload_item(callback);
				} else {
					if (callback) {
						callback();
					}
				}
			},
			fail: function(res) {
				//alert(JSON.stringify(res));
			}
		});
	},
	//end---------微信上传---------
	$id:"main_controller",
	//----------------
	//toast的信息
	toast_msg:'',
	//是否要展示toast
	is_toast_show:false,
	//定时器
	$timeout:0,
	//消息隐藏
	clear_toast:function(){
		//设置定时器
		if(vm.$timeout){
			clearTimeout(vm.$timeout);
		}
		vm.$timeout = setTimeout(function(){
			vm.is_toast_show = false;
			vm.toast_msg = '';
		},3000);		
	},	
	//-----------------
	/**
	 * 通过JS来控制宽度
	 */
	cal_position:function(){
		var padding = 16*2;
		var img_width = 44;
		var window_width = $(window).width();
		vm.width = window_width-img_width-padding-44;
	},
	width:0,
	/**
	 * 累计添加的高度
	 */
	$add_height:0,
	/**
	 * 一个文本的大概高度
	 */
	$text_height:17.5,
	/**
	 * 最大累加高度
	 */
	$max_add_height:17.5*4,
	/**
	 * 微信输入框高度
	 */
	weixin_input_height:29,
	/**
	 * 微信输入框的原始高度
	 */
	$weixin_input_height:29,
	/**
	 * 整体输入块的高度
	 */
	chat_frame_input_div_height:42,
	/**
	 * 整体输入块的原始高度
	 */
	$chat_frame_input_div_height:42,
	/**
	 * 下面三个都是处理对应的padding-top的
	 */
	send_picture_div_padding_top:0,
	send_btn_div_padding_top:0,
	chat_frame_content_padding_bottom:42,
	/**
	 * chat_frame_content的原始padding-bottom
	 */
	$chat_frame_content_padding_bottom:42,
	/**
	 * 响应textrarea换行操作
	 */
	respone_textarea_height:function(){
		//获取输入内容的换行符数量
		var num = vm.get_new_line_num();
		vm.$add_height = num * vm.$text_height;
//		console.log("$add_height",vm.$add_height);
//		console.log("$max_add_height",vm.$max_add_height);
		if(vm.$add_height>=vm.$max_add_height){
			return ;
		}
		vm.weixin_input_height = vm.$weixin_input_height + vm.$add_height;
		vm.chat_frame_input_div_height = vm.$chat_frame_input_div_height + vm.$add_height;
		vm.chat_frame_content_padding_bottom = vm.$chat_frame_content_padding_bottom+vm.$add_height;
		vm.send_picture_div_padding_top = vm.$add_height;
		vm.send_btn_div_padding_top = vm.$add_height;
	},
	/**
	 * 获取用户输入内容的换行符数量
	 */
	get_new_line_num:function(){
		var array = vm.content.split('');
		var count = 0;
		$.each(array, function(index) {    
			//   回车 和 //n
			if(array[index].charCodeAt() == 10 || array[index].charCodeAt() == 92){
				count++;
			}
		});
		return count;
	},
	//最近的信息
	list:[],
	//头像信息
	head:{
		//会员头像
		memberface:'',
		//医生头像
		toface:'',
		usertype:'',
		echoname:'',
	},
	//原图
	upyun_img:'',
	//聊天窗口图片
	upyun_chat_img:'',
	//聊天窗口头像
	upyun_chat_head:'',	
	//是否正在加载
	is_loading:false,	
	/**
	 * 查询最近的消息
	 */
	load:function(callback){
		vm.is_loading = true;
		$.ajax({
			type:"post",
			url:get_dialogue_url,
			data:'touid='+common.getUrlParam('touid'),
			dataType:"json",
			success:function(data){
				console.log(data);
				vm.is_loading = false;
				//数据都添加多一个loading状态
				$.each(data.dialogue, function(index) {
					//true代表真正发送中 false代表已经发送成功的，默认都是发送成功了的
					data.dialogue[index].loading = false;
					//true代表发送失败了 false代表已经发送成功的
					data.dialogue[index].error = false;
					data.dialogue[index].is_old = true;
				});
				vm.list = data.dialogue;
				if(data.head && data.head.length){
					vm.head = data.head[0];
				}
				vm.upyun_img = data.upyun_img;
				vm.upyun_chat_img = data.upyun_chat_img;
				vm.upyun_chat_head = data.upyun_chat_head;
				if(vm.list.size()){
					//这里改为拿医生消息的最新一条
					for(var i=vm.list.size()-1;i>=0;i--){
						if(vm.list[i].qatype == '2'){
							vm.new_time = vm.list[i].createdate;
							break;
						}
					}
				}else{
					vm.new_time = chat_js.get_today();
				}
				if(callback){
					callback();
				}
			},	
			error:function(){
				vm.is_loading = false;
				vm.toast_msg = "网络错误";
				vm.is_toast_show = true;
				vm.clear_toast();			
			},		
		});			
	},
	//最新的时间点
	new_time:'',
	//滚动次数
	$count_scroll:0,
	//默认展示的图片数，其实就是对应触发的滚动数
	$count_default_show_img:0,
	//懒加载图片
	lazyload_img:function(param){
		//第一次加载
		if(param == 'set'){
			vm.scroll_bottom();
			var $imgs = $(".lazyload_img");
			//----------------汇总一开始有多少图片进行加载----------------------
			$.each($imgs, function(index) {    
				var $this = $(this);
				var time = $(this).data('time');
				if(time){
					var et = $this.offset().top;
					var eb = et + $this.height();
					if (eb >= 0) {
						vm.$count_default_show_img++;
					}	
				}
			});
			//----------------监听是否要进行滚动到底部------------------
			$.each($imgs, function(index) {    
				var $this = $(this);
				 $this.get(0).onload = function(){
				 	//这里每个图片都应该加载了两次（这里的img必须有time）（除了一开始展示的）
				 	var time = $(this).data('time');
					if (time) {
						//这里的条件是代表用户有没有进行过滚动操作
						if (vm.$count_scroll - vm.$count_default_show_img <=1) {
							vm.scroll_bottom();
						}
					}
				 }
			});
			$imgs.unveil();			
		}
		//添加节点
		if(param == 'add'){
			vm.is_mask_show = false;
			$(".lazyload_img").unveil();
			vm.scroll_bottom();
		}
	},
	//滚动到底部
	scroll_bottom:function(){
		$('#chat_frame_content').scrollTop($('#chat_frame_content')[0].scrollHeight);
	},
	//隔一分钟就请求最新的数据
	timer:function(){
		setInterval(function(){
			$.ajax({
				type:"post",
				url:get_newest_reply_url,
				data:'touid='+common.getUrlParam('touid')+"&date="+vm.new_time,
				dataType:"json",
				success:function(data){
					console.log(data);
					data.is_old = true;
					vm.list.pushArray(data);
					for(var i=vm.list.size()-1;i>=0;i--){
						if(vm.list[i].qatype == '2'){
							vm.new_time = vm.list[i].createdate;
							break;
						}
					}					
				},	
				error:function(){
					vm.toast_msg = "网络错误";
					vm.is_toast_show = true;
					vm.clear_toast();			
				},		
			});				
		},60*1000);
	},
	//下面都是发送逻辑相关
	//输入内容
	content:'',
	//用于发送的时候
	$content:'',
	//发送文本信息
	send_message_content: function() {
		if(!vm.content.trim()){
			vm.toast_msg = "输入内容不能为空！";
			vm.is_toast_show = true;
			vm.clear_toast();
			return ;
		}
		vm.$content = vm.content;
		vm.send_message(false,'1');
	},
//	//当用户选择到图片的时候
//	change:function(){
//		var file = this.files[0];
//		//文件类型判断
//		if(file.type.toLowerCase().indexOf('jpeg')==-1 && file.type.toLowerCase().indexOf('png')==-1 && file.type.toLowerCase().indexOf('jpg')==-1&& file.type.toLowerCase().indexOf('gif')==-1){
//				vm.toast_msg = "该文件不是图片";
//				vm.is_toast_show = true;
//				vm.clear_toast();		
//				return ;
//		}
//		vm.is_mask_show = true;
//		var reader = new FileReader();
//		//注册事件
//		reader.onload = function(){
//			//获取图片的地址，这里应该是base64
//			vm.$content = reader.result;
//			vm.send_message_image();
//		}
//		//读取文件
//		reader.readAsDataURL(file);			
//	},
	//发送图片信息
	send_message_image:function(){
		vm.send_message(true,'2');
	},
	send_message:function(is_upload_img,mtype){
		vm.list.push({
			content:vm.$content,
			createdate:chat_js.get_today(),
			//标记正在发送中
			loading:true,
			mtype:mtype,
			qatype:"1",
			is_old:false,
		});
		var index = vm.list.size()-1;
		var fd = new FormData();
		fd.append('touid',common.getUrlParam('touid'));
		if(is_upload_img == false){
			var content = vm.content;
			fd.append('content',content);			
		}else{
//			fd.append('file[]', $("#send_picture_input_file")[0].files[0], "a.png");	
			fd.append('media_id_list', JSON.stringify([vm.weixin_images.serverIds[vm.$index]]));	
		}
		fd.append('is_upload_img',is_upload_img);
		vm.content = '';
//		$("#send_picture_input_file").val('');
		vm.respone_textarea_height();
		$.ajax({
			type: "post",
			url: get_reply_url,
			data: fd,
			dataType: "json",
			processData: false,
			contentType: false,				
			success: function(data) {
				console.log(data);
				if(data.status == '1'){
					vm.list[index].loading = false;
					vm.list[index].error = false;
				}else if(data.status == '2'){
					vm.list[index].loading = false;
					vm.list[index].error = true;
					vm.toast_msg = "发送失败！";
					vm.is_toast_show = true;
					vm.clear_toast();
				}else{
					vm.list[index].loading = false;
					vm.list[index].error = true;		
					vm.toast_msg = "服务器异常！";
					vm.is_toast_show = true;
					vm.clear_toast();					
				}
			},
			error: function() {
				vm.toast_msg = "网络错误";
				vm.is_toast_show = true;
				vm.clear_toast();
			},
		});		
	},
	is_show_pic_modal:false,
	//大图的地址
	show_img_url:'',
	//展示模态框
	show_img_modal:function(index){
		var url = vm.list[index].content;
		var is_old = vm.list[index].is_old;
		if(url){
			if(is_old == false){
				vm.show_img_url = url;
			}else{
				vm.show_img_url = url+vm.upyun_img;	
			}
			vm.is_show_pic_modal = true;
		}
	},
	hide_pic_modal:function(){
		vm.is_show_pic_modal = false;
		vm.pic_modal_img_is_load = false;
		vm.show_img_url = '';			
	},
	//模态框的margin-top
	$pic_modal_margin_top:25,
	$pic_modal_footer_height:110,
	//模态框的最大高度
	pic_modal_height:0,
	//计算高度
	cal_pic_modal_height:function(){
		var windowheight = $(window).height();
		vm.pic_modal_height = windowheight - vm.$pic_modal_margin_top*2 - vm.$pic_modal_footer_height;
	},	
	pic_modal_img_is_load:false,
	//是否展示遮罩
	is_mask_show:false,
});
avalon.ready(function(){
	$('body').css('opacity',1);
});
